Page({
    data: {
        historyList: [],//存储浏览历史记录
        userInfo: {},//存储用户基本信息
        hasUserInfo: false//标识用户是否已登录
    },

    onLoad(options) {
        // 检查本地存储的用户信息
        this.loadUserInfo()
    },

    onShow() {
        // 每次显示页面时加载浏览历史
        this.loadHistory()
        // 重新加载用户信息
        this.loadUserInfo()
    },

    // 加载用户信息
    loadUserInfo: function () {//loadUserInfo 的作用：从本地存储读取用户信息并刷新页面状态。
        //try { ... } catch (e) { ... }：用来捕获读取本地存储时可能的异常，避免页面报错
        try {
            //同步从本地存储读取键为 userInfo 的数据（登录时我们保存过）
            const userInfo = wx.getStorageSync('userInfo')
            //if (userInfo) { ... }：只有读取到数据时才更新页面
            if (userInfo) {
                this.setData({
                    //把读取到的用户信息放到页面数据 userInfo，用于 WXML 渲染头像、昵称等。
                    userInfo: userInfo,
                    //把 hasUserInfo 设为 true，用于控制“已登录/未登录”的 UI 显示。
                    hasUserInfo: true
                })
            }
        } catch (e) {
            console.error('加载用户信息失败:', e)
        }
    },

    // 选择头像登录（新方式）
    onChooseAvatar: function (e) {
        //从微信返回的事件对象中解构出用户选择的头像URL
        //e.detail包含微信选择头像后的返回路径
        //avatarUrl 是头像的临时文件路径
        const { avatarUrl } = e.detail

        // 获取用户昵称,弹出输入框
        wx.showModal({
            title: '设置昵称',
            editable: true,
            placeholderText: '请输入昵称',
            success: (res) => {
                // 用户点击了"确定"且输入了内容
                if (res.confirm && res.content) {
                    //生成一个基于时间戳的唯一用户ID
                    //Date.now() 返回当前时间戳
                    //确保每个用户都有唯一标识
                    const userId = 'user_' + Date.now()
                    //构建用户数据
                    const userData = {
                        nickName: res.content,
                        avatarUrl: avatarUrl,
                        id: userId,
                        loginTime: new Date().toLocaleString('zh-CN')
                    }
                    // 保存到本地存储
                    wx.setStorageSync('userInfo', userData)
                    //跟新页面状态
                    this.setData({
                        userInfo: userData,
                        hasUserInfo: true
                    })

                    wx.showToast({
                        title: '登录成功',
                        icon: 'success'
                    })
                }
            }
        })
    },

    // 旧版微信授权登录（已废弃，保留作为备用）
    getUserProfile: function (e) {
        // 这个方法已经废弃，不再使用
        wx.showToast({
            title: '请使用选择头像登录',
            icon: 'none'
        })
    },

    // 选择头像
    chooseAvatar: function (e) {
        //wx.chooseMedia API 打开微信的媒体选择器
        wx.chooseMedia({
            count: 1,//限制只能传1张，避免用户误选多张
            mediaType: ['image'],//只允许图片，不允许视频
            sourceType: ['album', 'camera'],//支持相册和相机
            success: (res) => {
                //临时文件路径  res.tempFiles 是选择结果数组  [0] 取第一个（因为 count=1） .tempFilePath 获取本地临时路径
                const tempFilePath = res.tempFiles[0].tempFilePath

                // 这里可以上传到服务器，暂时只更新本地
                const userInfo = this.data.userInfo//获取引用
                userInfo.avatarUrl = tempFilePath//修改属性

                //数据持久化  将更新后的用户信息保存到本地存储确保小程序重启后头像仍然是新的,同步方法，会阻塞执行
                wx.setStorageSync('userInfo', userInfo)
                //响应式更新
                this.setData({
                    userInfo: userInfo
                })

                wx.showToast({
                    title: '头像更新成功',
                    icon: 'success'
                })
            },
            fail: (err) => {
                console.error('选择头像失败:', err)
                wx.showToast({
                    title: '选择头像失败',
                    icon: 'none'
                })
            }
        })
    },

    // 编辑资料
    editProfile: function () {
        //弹出输入框
        wx.showModal({
            title: '编辑资料',
            editable: true,
            //启用输入框
            placeholderText: '请输入新昵称',
            success: (res) => {
                if (res.confirm && res.content) {
                    //如果用户输入了内容并且点击量确认执行下一步
                    const userInfo = this.data.userInfo//获取当前用户信息
                    userInfo.nickName = res.content//跟新昵称

                    wx.setStorageSync('userInfo', userInfo)//存储到本地
                    //将更新后的用户信息保存到微信小程序的本地存储中，确保数据持久化。
                    this.setData({//更新页面显示
                        userInfo: userInfo
                        //更新页面的数据状态，触发页面重新渲染，让用户立即看到新的昵称。
                    })

                    wx.showToast({
                        //弹出更新成功提示
                        title: '昵称更新成功',
                        icon: 'success'
                    })
                }
            }
        })
    },

    // 退出登录
    logout: function () {
        wx.showModal({
            title: '提示',
            content: '确定要退出登录吗？',
            success: (res) => {
                if (res.confirm) {
                    wx.removeStorageSync('userInfo')
                    this.setData({
                        userInfo: {},
                        hasUserInfo: false
                    })
                    wx.showToast({
                        title: '已退出登录',
                        icon: 'success'
                    })
                }
            }
        })
    },

    // 加载浏览历史
    loadHistory: function () {
        try {
            const history = wx.getStorageSync('newsHistory') || []
            this.setData({
                historyList: history
            })
            console.log('加载浏览历史:', history.length + '条')
        } catch (e) {
            console.error('加载浏览历史失败:', e)
            this.setData({
                historyList: []
            })
        }
    },

    // 跳转到详情页
    goToDetail: function (e) {
        const newsId = e.currentTarget.dataset.id
        wx.navigateTo({
            url: `/pages/index/detail?id=${newsId}`
        })
    },

    // 删除单条历史记录
    deleteHistory: function (e) {
        const newsId = e.currentTarget.dataset.id

        wx.showModal({
            title: '提示',
            content: '确定删除这条浏览记录吗？',
            success: (res) => {
                if (res.confirm) {
                    try {
                        let history = wx.getStorageSync('newsHistory') || []
                        history = history.filter(item => item.id !== newsId)
                        wx.setStorageSync('newsHistory', history)

                        this.setData({
                            historyList: history
                        })

                        wx.showToast({
                            title: '删除成功',
                            icon: 'success',
                            duration: 1500
                        })
                    } catch (e) {
                        console.error('删除历史记录失败:', e)
                        wx.showToast({
                            title: '删除失败',
                            icon: 'none'
                        })
                    }
                }
            }
        })
    },

    // 清空所有历史记录
    clearHistory: function () {
        wx.showModal({
            title: '提示',
            content: '确定清空所有浏览记录吗？',
            confirmColor: '#FF5A5F',
            success: (res) => {
                if (res.confirm) {
                    try {
                        wx.removeStorageSync('newsHistory')
                        this.setData({
                            historyList: []
                        })
                        wx.showToast({
                            title: '已清空',
                            icon: 'success',
                            duration: 1500
                        })
                    } catch (e) {
                        console.error('清空历史记录失败:', e)
                        wx.showToast({
                            title: '清空失败',
                            icon: 'none'
                        })
                    }
                }
            }
        })
    }
})
